//封装倒计时逻辑函数
import {ref,computed, onUnmounted} from 'vue'
import dayjs from 'dayjs'

export const useCountDown = () =>{
 //1.响应式数据
 let timer = null
 const time = ref(0)
 //存储倒计时结束的回调函数
 const finishCallback = ref(null)
 //格式化时间
  const formatTime = computed(()=>dayjs.unix(time.value).format('mm分ss秒'))
  //2.开启倒计时的函数
  const start = (currentTime) => {
    //开启倒计时的逻辑
    //核心逻辑编写：每隔一秒减一

    time.value = currentTime
    timer = setInterval(()=>{
      time.value--
      if(time.value <= 0){
        clearInterval(timer)
        timer=null
        //执行结束回调（如果有
        if(finishCallback.value){
          finishCallback.value()
        }
      }
    },1000)
  }
  //组件销毁时清楚定时器
  onUnmounted(()=>{
    timer&&clearInterval(timer)
  })
  return{
    formatTime,
    start,
    finishCallback // 暴露回调，供外部设置
  }
}
